﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Windows.Forms;
using GSQ.BusinessEntities;
using GSQ.BusinessLogic;
using GSQ.Rpt_s;

namespace UIapp.Dialogos
{
    public partial class frmNc : Plantillas.frmDialogPlantilla, Interfaces.IPantalla
    {
        public frmNc()
        {
            InitializeComponent();
            this.radWizard1.HelpButton.Visibility = Telerik.WinControls.ElementVisibility.Hidden;
            this.radWizard1.NextButton.Text = "&Siguiente >";
            this.radWizard1.FinishButton.Text = "&Finalizar";
            this.radWizard1.BackButton.Text = "< &Anterior";
            this.radWizard1.CancelButton.Text = "&Cancelar";
            this.dtpFecha.Value = new UtilidadesBL().GetDate();
            this.newEntity = new NC();
            this.reImprimirToolStripMenuItem.Image = new System.Drawing.Bitmap(Comun.systemConfig.RUTA_IMAGENES + "printer.png");
            this.verEnPantallaToolStripMenuItem.Image = new System.Drawing.Bitmap(Comun.systemConfig.RUTA_IMAGENES + "printDisplay.png");
            this.ctrPrintTo1.Load(this.Name);
        }

        #region Variables
        private FACTURAS entityFactura;
        private List<FACTURAS> lstFacturas = new List<FACTURAS>();
        private NC newEntity;
        bool entityError = false;
        bool calcularITBIS = false;
        #endregion

        #region Implementacion IPantalla
        public int ComandosSoportados
        {
            get { return 0; }
        }

        public void Nuevo()
        {
            throw new NotImplementedException();
        }

        public void Modificar()
        {
            throw new NotImplementedException();
        }

        public void Eliminar()
        {
            throw new NotImplementedException();
        }

        public void Refrescar()
        {
            throw new NotImplementedException();
        }

        public void Buscar()
        {
            throw new NotImplementedException();
        }

        public void AgregarProducto(Controles.TransferEntity tranferEntity)
        {
            //foreach (FACTURAS_DETALLES t in this.newEntity.FACTURAS_DETALLES)
            //{
            //    if (t.ID_PRODUCTO == tranferEntity.PRODUCTOS.ID)
            //    {
            //        Comun.ShowInMainMessage("Producto " + tranferEntity.PRODUCTOS.CODIGO + " previamente agregado.");
            //        return;
            //    }
            //}
            //FACTURAS_DETALLES facturaInvDetalle = new FACTURAS_DETALLES();

            //facturaInvDetalle.ID = 0;
            //facturaInvDetalle.ID_PRODUCTO = tranferEntity.PRODUCTOS.ID;
            //facturaInvDetalle.CANTIDAD = tranferEntity.CANTIDAD;
            //facturaInvDetalle.COSTO = tranferEntity.PRODUCTOS.COSTO;
            ////facturaInvDetalle.PRECIO = tranferEntity.COSTO;

            //if (tranferEntity.PRODUCTOS.IMPUESTOS)
            //{
            //    facturaInvDetalle.PRECIO = (tranferEntity.COSTO) / ((Comun.utilidades.X_IMPUESTOS / 100) + 1);
            //    facturaInvDetalle.IMPUESTO = (tranferEntity.COSTO - facturaInvDetalle.PRECIO) * tranferEntity.CANTIDAD;
            //    facturaInvDetalle.X_IMPUESTO = Comun.utilidades.X_IMPUESTOS;
            //}
            //else
            //{
            //    facturaInvDetalle.PRECIO = tranferEntity.COSTO;
            //    facturaInvDetalle.IMPUESTO = 0;
            //    facturaInvDetalle.X_IMPUESTO = 0;
            //}
            //facturaInvDetalle.DESCUENTO = tranferEntity.DESCUENTO;
            //facturaInvDetalle.X_DESCUENTO = (facturaInvDetalle.DESCUENTO / (facturaInvDetalle.CANTIDAD * facturaInvDetalle.PRECIO)) * 100;
            //facturaInvDetalle.C_DEVUELTA = 0;
            //facturaInvDetalle.DESCRIPCIONES = tranferEntity.PRODUCTOS.DESCRIPCIONES;
            //facturaInvDetalle.MEDIDAS = tranferEntity.PRODUCTOS.MEDIDAS;
            //facturaInvDetalle.PRODUCTOS = tranferEntity.PRODUCTOS;
            //if (facturaInvDetalle.IsValid())
            //{
            //    this.newEntity.FACTURAS_DETALLES.Add(facturaInvDetalle);
            //    this.bindingSource.DataSource = this.newEntity.FACTURAS_DETALLES.ToList();
            //    this.CalcularTotales();
            //}
            //else
            //    Comun.ShowMessage(facturaInvDetalle);
        }
        #endregion

        #region Metodos Auxiliares
        private void GetFacturas(decimal nroFactura)
        {
            this.lstFacturas = new FacturasBL().GetByNroFactura(nroFactura);
        }

        private void AddNcDetail(string codigo, decimal cantidad)
        {
            if (this.newEntity.NC_DETALLES.Where(a => a.PRODUCTOS.CODIGO == this.txtCodigo.Text.Trim()).Count() > 0)
            {
                Comun.ShowMessage("Producto previamente agregado verifique.", MessageBoxIcon.Information);
                return;
            }

            FACTURAS_DETALLES fd = this.entityFactura.FACTURAS_DETALLES.Where(a => a.PRODUCTOS.CODIGO == codigo).FirstOrDefault();


            NC_DETALLES ncD = new NC_DETALLES();

            ncD.ID = 0;
            ncD.ID_PRODUCTO = fd.ID_PRODUCTO;
            ncD.PRECIO = fd.PRECIO;
            ncD.COSTO = fd.COSTO;
            ncD.CANTIDAD = cantidad;
            ncD.DESCUENTO = (fd.DESCUENTO / fd.CANTIDAD) * cantidad;
            ncD.X_DESCUENTO = (fd.DESCUENTO / (fd.CANTIDAD * fd.PRECIO)) * 100;
            if (calcularITBIS)
            {
                ncD.IMPUESTO = (fd.IMPUESTO / fd.CANTIDAD) * cantidad;
                ncD.X_IMPUESTO = fd.X_IMPUESTO;
            }
            else
            {
                ncD.IMPUESTO = 0;
                ncD.X_IMPUESTO = 0;
            }

            ncD.DESCRIPCIONES = fd.DESCRIPCIONES;
            ncD.PRODUCTOS = fd.PRODUCTOS;
            this.newEntity.NC_DETALLES.Add(ncD);
        }

        private void CalcularTotales()
        {
            if (this.newEntity.NC_DETALLES.Count > 0)
            {
                decimal Tdescuento = 0, Timpuesto = 0, Stotal = 0, T = 0;
                foreach (NC_DETALLES f in this.newEntity.NC_DETALLES)
                {
                    Tdescuento = Tdescuento + f.DESCUENTO;
                    Timpuesto = Timpuesto + f.IMPUESTO;
                    Stotal = Stotal + f.SUB_TOTAL_X_PRECIO;
                    T = (Stotal - Tdescuento) + Timpuesto;

                }
                this.lblTotalDescuento.Text = Tdescuento.ToString("N2");
                this.lblTotalImpuestos.Text = Timpuesto.ToString("N2");
                this.lblSubTotal.Text = Stotal.ToString("N2");
                this.lblTotalGeneral.Text = T.ToString("N2");
            }
            else
            {
                this.lblTotalImpuestos.Text = "0.00";
                this.lblTotalDescuento.Text = "0.00";
                this.lblSubTotal.Text = "0.00";
                this.lblTotalGeneral.Text = "0.00";
            }
        }

        private void LimpiarAdd()
        {
            this.txtCodigo.Text = string.Empty;

            this.lblDescripcion.Text = "___";
            this.lblPrecio.Text = "0.00";

            this.txtCantidad.Text = "0.00";

            this.lblImporte.Text = "0.00";
            this.txtCodigo.Focus();
        }
        #endregion

        #region Tratamiento de eventos
        private void radWizard1_Next(object sender, Telerik.WinControls.UI.WizardCancelEventArgs e)
        {

            if (this.radWizard1.SelectedPage.Name == this.wizardPage2.Name && this.entityFactura == null)
            {
                Comun.ShowInMainMessage("Debe seleccionar una factura antes de continuar.");
                e.Cancel = true;
                return;
            }

            if (this.radWizard1.SelectedPage == this.wizardPage2 || this.radWizard1.SelectedPage == this.wizardPage3 || this.radWizard1.SelectedPage == this.wizardPage4)
            {
                e.Cancel = true;

            }

            if (this.rdbDevolucion.Checked && this.radWizard1.SelectedPage.Name == this.wizardPage2.Name)
            {
                this.radWizard1.SelectedPage = this.wizardPage3;
                return;
            }

            else if (this.rdbNotaCredito.Checked && this.radWizard1.SelectedPage.Name == this.wizardPage2.Name)
            {
                this.radWizard1.SelectedPage = this.wizardPage4;
                return;
            }

            if (this.radWizard1.SelectedPage == this.wizardPage3 || this.radWizard1.SelectedPage == this.wizardPage4)
            {
                if (rdbDevolucion.Checked)
                {
                    if (this.newEntity.NC_DETALLES.Count <= 0)
                    {
                        e.Cancel = true;
                        Comun.ShowInMainMessage("No puede continuar hasta que agregue al menos un producto.");
                        return;
                    }
                }
                else
                {
                    decimal i = 0;
                    if (!decimal.TryParse(this.txtMontoNotaCredito.Text.Trim(), out i))
                    {
                        e.Cancel = true;
                        Comun.ShowInMainMessage("Solo se permiten números en este campo.");
                        this.txtMontoNotaCredito.Text = "0.00";
                        this.txtMontoNotaCredito.SelectAll();
                        this.txtMontoNotaCredito.Focus();
                        return;
                    }
                    else if (i <= 0)
                    {
                        e.Cancel = true;
                        Comun.ShowInMainMessage("El monto debe ser mayor a cero");
                        this.txtMontoNotaCredito.SelectAll();
                        this.txtMontoNotaCredito.Focus();
                        return;
                    }
                    this.txtMontoNotaCredito.Text = decimal.Parse(this.txtMontoNotaCredito.Text.Trim()).ToString("N2");
                }
                this.lblCliente.Text = string.Format("{0} - {1}", this.entityFactura.ID_CLIENTE.ToString("0000"), this.entityFactura.CLIENTES.CLIENTE);
                this.lblNroFactura.Text = this.entityFactura.NRO_FACTURA.ToString();
                this.lblCondicion.Text = this.entityFactura.CONDICIONES.CONDICION;
                if (rdbDevolucion.Checked)
                    this.lblMontoDocumento.Text = this.lblTotalGeneral.Text;
                else
                    this.lblMontoDocumento.Text = this.txtMontoNotaCredito.Text;
                this.radWizard1.SelectedPage = this.wizardCompletionPage1;
            }
        }

        private void radWizard1_SelectedPageChanged(object sender, Telerik.WinControls.UI.SelectedPageChangedEventArgs e)
        {
            //MessageBox.Show(this.radWizard1.SelectedPage.Name);
            if (e.SelectedPage.Name == this.wizardPage2.Name)
                this.radWizard1.NextButton.Enabled = false;
            else
                this.radWizard1.NextButton.Enabled = true;
        }

        private void radGridView1_CellDoubleClick(object sender, Telerik.WinControls.UI.GridViewCellEventArgs e)
        {
            FACTURAS f = new FacturasBL().GetById(((FACTURAS)this.radGridViewSelectFactura.CurrentRow.DataBoundItem).ID);
            if (f.ACTIVO)
            {
                if (f.FECHA_HORA.Date > this.dtpFecha.Value.Date)
                {
                    Comun.ShowInMainMessage("Fecha del documento no puede ser menor a la de la factura.");
                    this.dtpFecha.Focus();
                    return;
                }

                if (this.rdbDevolucion.Checked && (f.FACTURAS_DETALLES.Where(a => a.CANTIDAD <= a.C_DEVUELTA).ToList().Count() == f.FACTURAS_DETALLES.Count))
                {
                    Comun.ShowInMainMessage("Factura está completamente devuelta. No se puede continuar.");
                    return;
                }

                decimal diasVijencia = Comun.DateDiff(Comun.DateInterval.Day, f.FECHA_HORA, this.dtpFecha.Value);
                if (diasVijencia >= Comun.utilidades.DIAS_MAX_FACT_DEVOLUCIONES && this.rdbDevolucion.Checked)
                {
                    Comun.ShowMessage(string.Format("Esta factura tiene {0:N0} días de antigüedad por tanto no le será calculado el impuesto", diasVijencia), System.Windows.Forms.MessageBoxIcon.Information);
                    this.calcularITBIS = false;
                }
                else
                    this.calcularITBIS = true;
                this.LimpiarAdd();
                this.bgwGetFactura.RunWorkerAsync();
                Comun.ShowLoadingFRM();
            }
            else
            {
                Comun.ShowInMainMessage("Factura anulada. No es posible continuar.");
                return;
            }
        }

        private void txtNroFactura_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
        {
            if (e.KeyChar == 13)
            {
                e.Handled = true;
                if (this.txtNroFactura.Text.Trim() != string.Empty)
                {
                    decimal i = 0;
                    if (decimal.TryParse(this.txtNroFactura.Text.Trim(), out i))
                    {
                        this.radGridViewSelectFactura.DataSource = null;
                        this.bgwFindFacturas.RunWorkerAsync();
                        Comun.ShowLoadingFRM();
                    }
                    else
                    {
                        Comun.ShowInMainMessage("Solo se permiten valores numéricos.");
                        this.txtNroFactura.Focus();
                        this.txtNroFactura.SelectAll();
                    }
                }
            }
        }

        private void txtNroFactura_TextChanged(object sender, EventArgs e)
        {
            if (this.txtNroFactura.Text == string.Empty)
            {
                this.lstFacturas = new List<FACTURAS>();
                this.entityFactura = null;
                this.radGridViewSelectFactura.DataSource = null;
            }
        }

        private void bgwFindFacturas_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            decimal i = 0;
            if (decimal.TryParse(this.txtNroFactura.Text.Trim(), out i))
                this.GetFacturas(i);
        }

        private void bgwFindFacturas_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
        {
            Comun.CloseLoadingFRM();
            if (this.lstFacturas.Count > 0)
            {
                this.radGridViewSelectFactura.DataSource = this.lstFacturas;
                this.radGridViewSelectFactura.Focus();
            }
            else
            {
                this.entityFactura = null;
                this.txtNroFactura.Focus();
                this.txtNroFactura.SelectAll();
            }
        }

        private void radWizard1_Previous(object sender, Telerik.WinControls.UI.WizardCancelEventArgs e)
        {
            if (this.radWizard1.SelectedPage == this.wizardPage3 || this.radWizard1.SelectedPage == this.wizardPage4)
                e.Cancel = true;

            if (this.rdbDevolucion.Checked && (this.radWizard1.SelectedPage.Name == this.wizardPage3.Name))
            {
                if (this.radGridViewNcDetalle.RowCount > 0)
                    if (MessageBox.Show("Si retrocede se perderan los datos que ha introducido. ¿Desea continuar?", "Confirmación", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.OK)
                    {
                        this.newEntity.NC_DETALLES.Clear();
                        this.radGridViewNcDetalle.DataSource = this.newEntity.NC_DETALLES.ToList();
                        this.CalcularTotales();
                    }
                    else
                        return;
                e.Cancel = true;
                this.radWizard1.SelectedPage = this.wizardPage2;
                return;
            }
            else if (this.rdbNotaCredito.Checked && this.radWizard1.SelectedPage.Name == this.wizardPage4.Name)
            {
                e.Cancel = true;
                this.radWizard1.SelectedPage = this.wizardPage2;
                return;
            }

            if (this.radWizard1.SelectedPage == this.wizardCompletionPage1)
            {
                e.Cancel = true;
                if (rdbDevolucion.Checked)
                    this.radWizard1.SelectedPage = this.wizardPage3;
                else
                    this.radWizard1.SelectedPage = this.wizardPage4;
            }
        }

        private void bgwGetFactura_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            this.entityFactura = new FacturasBL().GetById(((FACTURAS)this.radGridViewSelectFactura.CurrentRow.DataBoundItem).ID);
        }

        private void bgwGetFactura_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
        {
            Comun.CloseLoadingFRM();
            if (entityFactura.FACTURAS_DETALLES.Count > 0 && this.rdbDevolucion.Checked)
            {
                this.txtCodigo.Items.Clear();
                foreach (FACTURAS_DETALLES fd in this.entityFactura.FACTURAS_DETALLES)
                    this.txtCodigo.Items.Add(fd.PRODUCTOS.CODIGO);
            }
            this.radWizard1.SelectNextPage();
        }

        private void txtCodigo_Validating(object sender, System.ComponentModel.CancelEventArgs e)
        {
            if (this.txtCodigo.Text.Trim() != string.Empty)
            {
                FACTURAS_DETALLES fd = this.entityFactura.FACTURAS_DETALLES.Where(a => a.PRODUCTOS.CODIGO == this.txtCodigo.Text.Trim()).FirstOrDefault();
                if (fd != null)
                {
                    this.lblDescripcion.Text = fd.DESCRIPCIONES.DESCRIPCION;
                    this.lblPrecio.Text = fd.PRECIO.ToString("N2");
                    this.txtCantidad.Text = fd.CANTIDAD_NETA.ToString("N2");
                }
                else
                {
                    Comun.ShowInMainMessage("La factura seleccionada no contiene el produccto indicado.");
                    this.txtCodigo.Focus();
                    this.txtCodigo.SelectAll();
                }
            }
        }

        private void txtCantidad_TextChanged(object sender, EventArgs e)
        {
            if (this.txtCantidad.Text.Trim() != string.Empty)
            {
                decimal i = 0;
                if (decimal.TryParse(this.txtCantidad.Text.Trim(), out i))
                {
                    this.lblImporte.Text = (decimal.Parse(this.lblPrecio.Text) * decimal.Parse(this.txtCantidad.Text)).ToString("N2");
                }
                else
                {
                    this.lblImporte.Text = "0.00";
                    this.txtCantidad.Text = "0.00";
                    this.txtCantidad.Focus();
                    this.txtCantidad.SelectAll();
                    Comun.ShowInMainMessage("Solo se permiten números en este campo.");
                }
            }
            else
            {
                this.txtCantidad.SelectAll();
                this.lblImporte.Text = "0.00";
                this.txtCantidad.Text = "0.00";
            }
        }

        private void btnAgregar_Click(object sender, EventArgs e)
        {
            if (this.txtCodigo.Text.Trim() == string.Empty)
            {
                this.txtCodigo.Focus();
                Comun.ShowInMainMessage("Favor indique un código de producto");
                return;
            }

            if (this.txtCantidad.Text.Trim() != string.Empty)
            {
                decimal i = 0;
                if (decimal.TryParse(this.txtCantidad.Text.Trim(), out i))
                {
                    if (i <= 0)
                    {
                        this.txtCantidad.Focus();
                        Comun.ShowInMainMessage("Favor indique una cantidad mayor que CERO <<0>>");
                        return;
                    }
                }
            }
            else
            {
                this.txtCantidad.Focus();
                Comun.ShowInMainMessage("Solo se permiten valores numéricos para la cantidad.");
                return;
            }

            AddNcDetail(this.txtCodigo.Text.Trim(), decimal.Parse(this.txtCantidad.Text.Trim()));
            this.radGridViewNcDetalle.DataSource = this.newEntity.NC_DETALLES.ToList();
            this.CalcularTotales();
            LimpiarAdd();
        }

        private void txtCodigo_TextChanged(object sender, EventArgs e)
        {
            if (this.txtCodigo.Text.Trim() == string.Empty)
                this.LimpiarAdd();
        }

        private void radButton1_Click(object sender, EventArgs e)
        {
            this.newEntity.NC_DETALLES.Clear();
            this.radGridViewNcDetalle.DataSource = this.newEntity.NC_DETALLES.ToList();
            this.CalcularTotales();

            foreach (FACTURAS_DETALLES fd in this.entityFactura.FACTURAS_DETALLES)
            {
                this.AddNcDetail(fd.PRODUCTOS.CODIGO, fd.CANTIDAD);
                this.radGridViewNcDetalle.DataSource = this.newEntity.NC_DETALLES.ToList();
                this.CalcularTotales();
            }
        }

        private void radGridViewNcDetalle_UserDeletingRow(object sender, Telerik.WinControls.UI.GridViewRowCancelEventArgs e)
        {
            this.newEntity.NC_DETALLES.Remove((NC_DETALLES)this.radGridViewNcDetalle.CurrentRow.DataBoundItem);
            this.CalcularTotales();
        }

        private void radWizard1_Finish(object sender, EventArgs e)
        {
            this.newEntity.ID = 0;
            this.newEntity.ID_NCF = this.entityFactura.ID_NCF;
            this.newEntity.ID_CLIENTE = this.entityFactura.ID_CLIENTE;
            this.newEntity.ID_FACTURA = this.entityFactura.ID;
            this.newEntity.ID_VENDEDOR = this.entityFactura.ID_VENDEDOR;
            this.newEntity.ID_USUARIO = this.entityFactura.ID_USUARIO;
            this.newEntity.OBSERVACIONES = this.txtObservaciones.Text.Trim();
            this.newEntity.FECHA = this.dtpFecha.Value;
            this.newEntity.FACTURAS = this.entityFactura;
            if (this.rdbDevolucion.Checked)
            {
                this.newEntity.ID_TIPO = 1;
                this.newEntity.T_IMPUESTO = decimal.Parse(this.lblTotalImpuestos.Text);
                this.newEntity.T_DESCUENTO = decimal.Parse(this.lblTotalDescuento.Text);
                this.newEntity.M_TOTAL = decimal.Parse(this.lblTotalGeneral.Text);
            }
            else
            {
                this.newEntity.ID_TIPO = 2;
                this.newEntity.T_IMPUESTO = 0;
                this.newEntity.T_DESCUENTO = 0;
                this.newEntity.M_TOTAL = decimal.Parse(this.txtMontoNotaCredito.Text.Trim());
            }
            this.backgroundWorker.RunWorkerAsync();
            Comun.ShowLoadingFRM();
        }

        private void backgroundWorker_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
        {
            if (this.newEntity.IsValid())
                new NcBL().Insert(this.newEntity);
            else
            {
                this.entityError = true;
                Comun.ShowMessage(newEntity);
            }
        }

        private void backgroundWorker_RunWorkerCompleted(object sender, System.ComponentModel.RunWorkerCompletedEventArgs e)
        {
            Comun.CloseLoadingFRM();
            if (e.Error != null)
                Comun.ShowMessage(e.Error);
            else if (this.entityError)
                return;
            else
            {
                Comun.ShowInMainMessage("Datos guardados correctamente.");
                this.DialogResult = System.Windows.Forms.DialogResult.OK;

                if (newEntity.ID_TIPO == 1)//Devolucion de mercancia
                {
                    try
                    {
                        if (Properties.Settings.Default.NcPrintTo == 0)
                            new Reportes().PrintDevolucionMercancia(newEntity.ID, true);
                        else
                        {
                            Plantillas.frmReportPreview frm = new Plantillas.frmReportPreview();
                            frm.crystalReportViewer1.ReportSource = new Reportes().GetDevolucionMercancia(newEntity.ID, true);
                            // frm.MdiParent = this.MdiParent;
                            frm.Show();
                        }
                    }
                    catch (Exception ex)
                    {
                        Comun.ShowInMainMessage(ex.Message);
                        Plantillas.frmReportPreview frm = new Plantillas.frmReportPreview();
                        frm.crystalReportViewer1.ReportSource = new Reportes().GetDevolucionMercancia(newEntity.ID, true);
                        // frm.MdiParent = this.MdiParent;
                        frm.Show();
                    }
                }
                else// Nota de credito
                {
                    try
                    {
                        if (Properties.Settings.Default.NcPrintTo == 0)
                            new Reportes().PrintNotaCredito(newEntity.ID, true);
                        else
                        {
                            Plantillas.frmReportPreview frm = new Plantillas.frmReportPreview();
                            frm.crystalReportViewer1.ReportSource = new Reportes().GetNotaCredito(newEntity.ID, true);
                            // frm.MdiParent = this.MdiParent;
                            frm.Show();
                        }
                    }
                    catch (Exception ex)
                    {
                        Comun.ShowInMainMessage(ex.Message);
                        Plantillas.frmReportPreview frm = new Plantillas.frmReportPreview();
                        frm.crystalReportViewer1.ReportSource = new Reportes().GetNotaCredito(newEntity.ID, true);
                        // frm.MdiParent = this.MdiParent;
                        frm.Show();
                    }
                }
                //((Vistas.frmFacturas)this.Owner).Listar(0);
                this.Close();
            }
        }

        private void contextMenuStrip1_Opening(object sender, CancelEventArgs e)
        {
            if (this.radGridViewSelectFactura.RowCount == 0)
            {
                e.Cancel = true;
                return;
            }
        }

        private void reImprimirToolStripMenuItem_Click(object sender, EventArgs e)
        {
            if (((FACTURAS)this.radGridViewSelectFactura.CurrentRow.DataBoundItem).ID_CONDICION == 1)
            {
                new Reportes().PrintFacturaCarta(((FACTURAS)this.radGridViewSelectFactura.CurrentRow.DataBoundItem).ID, false);
            }
            else
            {
                new Reportes().PrintFacturaTicket(((FACTURAS)this.radGridViewSelectFactura.CurrentRow.DataBoundItem).ID, false);
            }
        }

        private void verEnPantallaToolStripMenuItem_Click(object sender, EventArgs e)
        {

            Plantillas.frmReportPreview frm = new Plantillas.frmReportPreview();
            frm.crystalReportViewer1.ReportSource = new Reportes().GetFacturaCarta(((FACTURAS)this.radGridViewSelectFactura.CurrentRow.DataBoundItem).ID, false);
            // frm.MdiParent = this.MdiParent;
            frm.Show();
        }
        #endregion
    }
}
